package com.yanqu.road.entity.servercenter;

import com.yanqu.road.utils.string.StringUtils;

import java.util.ArrayList;
import java.util.List;

public class PackageUpdateInfo {
    private String packageMark = "";            //包体标识
    private String packageMinVersion = "";      //包体版本低
    private String packageMaxVersion = "";      //包体版本高
    private String updateScopeStr;              //更新范围，0：白名单；1：先遣服；2：正式
    private List<Integer> updateScopeList = new ArrayList<>();  //更新范围
    private int updateLevel;                    //更新级别，0：不需要更新；1：建议更新；2：强制更新
    private int updateMethod;                   //更新方式，0：包内更新；1：打开链接更新
    private String downloadUrl;                 //下载地址
    private int verMin1;
    private int verMin2;
    private int verMin3;
    private int verMax1;
    private int verMax2;
    private int verMax3;
    private boolean isDirtyVer = false;

    public String getPackageMark() {
        return packageMark;
    }

    public void setPackageMark(String packageMark) {
        this.packageMark = packageMark;
    }

    public String getPackageMinVersion() {
        return packageMinVersion;
    }

    public void setPackageMinVersion(String packageMinVersion) {
        this.packageMinVersion = packageMinVersion;
        if(StringUtils.isNullOrEmpty(packageMinVersion)){
            setDirtyVer(true);
            return;
        }
        String[] verArr = packageMinVersion.split("\\.");
        if(verArr.length < 3){
            setDirtyVer(true);
            return;
        }
        int v1,v2,v3;
        try {
            v1 = Integer.parseInt(verArr[0]);
            setVerMin1(v1);
            v2 = Integer.parseInt(verArr[1]);
            setVerMin2(v2);
            v3 = Integer.parseInt(verArr[2]);
            setVerMin3(v3);
        }catch (NumberFormatException e){
            setDirtyVer(true);
        }
    }

    public String getPackageMaxVersion() {
        return packageMaxVersion;
    }

    public void setPackageMaxVersion(String packageMaxVersion) {
        this.packageMaxVersion = packageMaxVersion;
        if(StringUtils.isNullOrEmpty(packageMaxVersion)){
            setDirtyVer(true);
            return;
        }
        String[] verArr = packageMaxVersion.split("\\.");
        if(verArr.length < 3){
            setDirtyVer(true);
            return;
        }
        int v1,v2,v3;
        try {
            v1 = Integer.parseInt(verArr[0]);
            setVerMax1(v1);
            v2 = Integer.parseInt(verArr[1]);
            setVerMax2(v2);
            v3 = Integer.parseInt(verArr[2]);
            setVerMax3(v3);
        }catch (NumberFormatException e){
            setDirtyVer(true);
        }
    }

    public String getUpdateScopeStr() {
        return updateScopeStr;
    }

    public void setUpdateScopeStr(String updateScopeStr) {
        this.updateScopeStr = updateScopeStr;
        List<Integer> dataList = StringUtils.stringToIntegerList(updateScopeStr, ",");
        setUpdateScopeList(dataList);
    }

    public List<Integer> getUpdateScopeList() {
        return updateScopeList;
    }

    public void setUpdateScopeList(List<Integer> updateScopeList) {
        this.updateScopeList = updateScopeList;
    }

    public int getUpdateLevel() {
        return updateLevel;
    }

    public void setUpdateLevel(int updateLevel) {
        this.updateLevel = updateLevel;
    }

    public int getUpdateMethod() {
        return updateMethod;
    }

    public void setUpdateMethod(int updateMethod) {
        this.updateMethod = updateMethod;
    }

    public String getDownloadUrl() {
        return downloadUrl;
    }

    public void setDownloadUrl(String downloadUrl) {
        this.downloadUrl = downloadUrl;
    }

    public int getVerMin1() {
        return verMin1;
    }

    public void setVerMin1(int verMin1) {
        this.verMin1 = verMin1;
    }

    public int getVerMin2() {
        return verMin2;
    }

    public void setVerMin2(int verMin2) {
        this.verMin2 = verMin2;
    }

    public int getVerMin3() {
        return verMin3;
    }

    public void setVerMin3(int verMin3) {
        this.verMin3 = verMin3;
    }

    public int getVerMax1() {
        return verMax1;
    }

    public void setVerMax1(int verMax1) {
        this.verMax1 = verMax1;
    }

    public int getVerMax2() {
        return verMax2;
    }

    public void setVerMax2(int verMax2) {
        this.verMax2 = verMax2;
    }

    public int getVerMax3() {
        return verMax3;
    }

    public void setVerMax3(int verMax3) {
        this.verMax3 = verMax3;
    }

    public boolean isDirtyVer() {
        return isDirtyVer;
    }

    public void setDirtyVer(boolean dirtyVer) {
        isDirtyVer = dirtyVer;
    }
}
